function findSubsequences(nums) {

    function backTracking(nums, startIndex, route) {
        let length = nums.length;
        // 大于2的才入
        if (route.length >= 2) {
            resArr.push(route.slice());
        }
        // set去重记录本层元素是否重复使用，新的一层usedSet都会重新定义（清空），所以要知道usedSet只负责本层
        const usedSet = new Set();
        for (let i = startIndex; i < length; i++) {
            // 不递增和已有该元素判断
            if (
                nums[i] < route[route.length - 1] ||
                usedSet.has(nums[i])
            ) continue;
            usedSet.add(nums[i]);
            route.push(nums[i]);

            backTracking(nums, i + 1, route);
            route.pop();
        }
    }
    const resArr = [];
    backTracking(nums, 0, []);
    return resArr;
}
let res = findSubsequences([4,6,7,7])
